package br.net.atasacramental.certificado.dao;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import br.net.atasacramental.certificado.model.Certificado;
import br.net.atasacramental.util.ConexaoDB;

import java.util.List;
/**
* @author alexandre.araujo
*/
public class CertificadoDAO{
	private String[][] ordemP = {{"idCertificado", "desc"}};
	@SuppressWarnings("unchecked")
    public List<Certificado> get() {
    	return (List<Certificado>) ConexaoDB.get(Certificado.class,true,1,100,null,ordemP);
    }
    public Certificado getByIdCertificado(int idCertificado){
    	 return (Certificado) ConexaoDB.getById(Certificado.class,idCertificado);
    }
    @SuppressWarnings("unchecked")
    public List<Certificado> getByValidade(Date validade){
     	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("validade", validade);
        return (List<Certificado>) ConexaoDB.get(Certificado.class,true,1,100,params,ordemP);
    }
    @SuppressWarnings("unchecked")
    public List<Certificado> getByValidadeComMargem(Date validade,int margem){
    	Date DtaF = new Date();
    	DtaF.setTime(validade.getTime()+32140800000L*margem);
		return (List<Certificado>) ConexaoDB.getBetween(Certificado.class,true,1,100,"validade",validade,DtaF,ordemP);
    }
    @SuppressWarnings("unchecked")
    public List<Certificado> getByPeriodoValidade(Date DtaI,Date DtaF){
		DtaF.setTime(DtaF.getTime()+86399999L);
		return (List<Certificado>) ConexaoDB.getBetween(Certificado.class,true,1,100,"validade",DtaI,DtaF,ordemP);
    }
    @SuppressWarnings("unchecked")
    public List<Certificado> getByPin(String pin) {
     	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("pin", pin);
        return (List<Certificado>) ConexaoDB.get(Certificado.class,true,1,100,params,ordemP);
    }
    
    public boolean insert(Certificado c){
        return ConexaoDB.insert(c);
    }
    public boolean update(Certificado c){
        return ConexaoDB.update(c);
    }
    public boolean delete(Certificado c){
        return ConexaoDB.delete(c);
    }
}
